int servoPin = 2; 
 
void setup()  //初始化内容
{
    Serial.begin(9600);
    Serial.println("[info] begin to start");
    pinMode(servoPin, OUTPUT); //设定舵机接口为输出接口
}
 
void loop()   //主循环
{
    if ( Serial.available()>0 ) {  
    int pos = Serial.parseInt();   // 解析串口数据中的整数信息并赋值给变量pos
    Serial.print("Set servo position: ");
    Serial.println(pos);           // 通过串口监视器显示变量pos数值
    rotateSpecificAngle(pos);             // 使用pos变量数值设置伺服电机
    delay(15);
  }
}
 
void rotateSpecificAngle(int angle) { //定义一个脉冲函数
  //发送50个脉冲
  for(int i=0;i<50;i++){
    int pulsewidth = (angle * 11) + 500; //将角度转化为500-2480的脉宽值
    digitalWrite(servoPin, HIGH);   //将舵机接口电平至高
    delayMicroseconds(pulsewidth);  //延时脉宽值的微秒数
    digitalWrite(servoPin, LOW);    //将舵机接口电平至低
    delayMicroseconds(20000 - pulsewidth);
  }
}
